{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "444186a0-7b1f-42e0-8578-def03fcd1d0c",
   "metadata": {},
   "outputs": [],
   "source": [
    "import time\n",
    "import sys\n",
    "sys.path.append(\"../\")\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.datasets import make_blobs\n",
    "from sklearn.model_selection import train_test_split\n",
    "import mindspore as ms\n",
    "import mindspore.nn as nn\n",
    "from mindspore import Tensor\n",
    "\n",
    "from quditop.gates import H, RX, RY, RZ\n",
    "from quditop.circuit import Circuit\n",
    "from quditop.expectation import Expectation\n",
    "from quditop.global_var import DTYPE\n",
    "\n",
    "ms.set_seed(10)\n",
    "np.set_printoptions(precision=5, suppress=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e151019c-4c70-4547-ab74-6af9ff5c28a8",
   "metadata": {},
   "source": [
    "## Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "2941a6ce-9ecb-4cb7-93cc-931a82dfc9a9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Prepare the dataset\n",
    "\n",
    "X, y = make_blobs(\n",
    "    n_samples=300, n_features=6, centers=3, cluster_std=1.0, random_state=1\n",
    ")\n",
    "\n",
    "plt.scatter(X[:, 0], X[:, 1], marker=\"o\", c=y, s=25, edgecolor=\"k\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2b6cbe2a-d11d-4ceb-9059-ae53027b1db0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X.shape: (300, 6)\n",
      "y.shape:(300,)\n",
      "X[:6]:\n",
      "[[ -6.607    9.4995  -8.103    2.1342  -0.6448   1.2858]\n",
      " [ -5.6174   7.2009  -8.9795   4.4636  -2.3143   0.357 ]\n",
      " [ -5.8304   8.4798  -9.8244   4.325   -1.6732   1.4432]\n",
      " [ -5.7247   8.4206  -9.1344   2.9827  -1.3466   1.2418]\n",
      " [ -2.4684   4.9639  -9.8167  -2.8462  -5.622   -8.6929]\n",
      " [ -6.5342   7.042  -10.5646   4.1405  -2.7168   0.9192]]\n",
      "y[:6]:\n",
      "[2 2 2 2 0 2]\n"
     ]
    }
   ],
   "source": [
    "print(f\"X.shape: {X.shape}\\ny.shape:{y.shape}\")\n",
    "print(f\"X[:6]:\\n{np.round(X[:6], 4)}\\ny[:6]:\\n{y[:6]}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "756cc728-fa32-4244-a0a3-a268bf3ac0a3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Split the dataset\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.7)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "de9d3bab-78fb-470a-b385-5d16e2dc0882",
   "metadata": {},
   "source": [
    "## Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "3b28270d-f6cc-4986-a976-89cf04f3a46c",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Circuit<\n",
      "  (gates): CellList<\n",
      "    (0): H(3|0)\n",
      "    (1): H(3|1)\n",
      "    (2): RX(3 [0 1] en_0|0)\n",
      "    (3): RY(3 [0 2] en_1|1)\n",
      "    (4): RX(3 [2 1] en_2|2)\n",
      "    (5): RY(3 [2 0] en_3|2)\n",
      "    (6): RX(3 [1 2] en_4|1)\n",
      "    (7): RY(3 [1 0] en_5|0)\n",
      "    (8): RX(3 [0 1] pr_0|0)\n",
      "    (9): RY(3 [0 1] pr_1|1)\n",
      "    (10): RZ(3 [0 1] pr_2|2)\n",
      "    (11): RX(3 [1 2] pr_3|1)\n",
      "    (12): RY(3 [1 2] pr_4|2)\n",
      "    (13): RZ(3 [1 2] pr_5|0)\n",
      "    (14): RX(3 [2 0] pr_6|2)\n",
      "    (15): RY(3 [2 0] pr_7|0)\n",
      "    (16): RZ(3 [2 0] pr_8|1)\n",
      "    (17): RX(3 [0 1] pr_9|0)\n",
      "    (18): RY(3 [0 1] pr_10|1)\n",
      "    (19): RZ(3 [0 1] pr_11|2)\n",
      "    >\n",
      "  >\n"
     ]
    }
   ],
   "source": [
    "# Build the model\n",
    "\n",
    "dim = 3\n",
    "n_qudits = 3\n",
    "\n",
    "circ = Circuit(dim, n_qudits)\n",
    "\n",
    "# First we apply H gate to each qudit.\n",
    "circ += [H(dim).on(0), H(dim).on(1)]\n",
    "\n",
    "# Since there are 6 features, we create a encoder with 6 rotation gate.\n",
    "encoder = Circuit(dim, n_qudits)\n",
    "encoder += RX(dim, [0, 1], pr='en_0').on(0)\n",
    "encoder += RY(dim, [0, 2], pr='en_1').on(1)\n",
    "encoder += RX(dim, [2, 1], pr='en_2').on(2)\n",
    "encoder += RY(dim, [2, 0], pr='en_3').on(2)\n",
    "encoder += RX(dim, [1, 2], pr='en_4').on(1)\n",
    "encoder += RY(dim, [1, 0], pr='en_5').on(0)\n",
    "encoder.as_encoder()\n",
    "\n",
    "# Then we add some Rotation gate to circuit.\n",
    "n_layer = 4\n",
    "ansatz = Circuit(dim, n_qudits)\n",
    "cnt = 0\n",
    "for i in range(n_layer):\n",
    "    ansatz += RX(dim, [i%dim, (i+1)%dim], pr=f\"pr_{cnt}\").on(i%n_qudits)\n",
    "    cnt += 1\n",
    "    ansatz += RY(dim, [i%dim, (i+1)%dim], pr=f\"pr_{cnt}\").on((i+1)%n_qudits)\n",
    "    cnt += 1\n",
    "    ansatz += RZ(dim, [i%dim, (i+1)%dim], pr=f\"pr_{cnt}\").on((i+2)%n_qudits)\n",
    "    cnt += 1\n",
    "\n",
    "net = circ + encoder + ansatz\n",
    "\n",
    "print(net)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "9f72975e-292d-4165-b898-23f5b3c29192",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=====================================Circuit Summary=====================================\n",
      "|Total number of gates   : 20.                                                          |\n",
      "|Parameter gates         : 18.                                                          |\n",
      "|with 18 parameters are  :                                                              |\n",
      "|en_0, en_1, en_2, en_3, en_4, en_5, pr_0, pr_1, pr_2, pr_3..                         . |\n",
      "|Number qudits of circuit: 3                                                            |\n",
      "=========================================================================================\n"
     ]
    }
   ],
   "source": [
    "net.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9fb9a4ba-e8db-400f-9e71-2ac6a615f6d4",
   "metadata": {},
   "source": [
    "## Hamiltonian"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "6107b00f-5882-414b-ad83-a921eeddf74b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# In fact we can just quantum gate to create hamiltonian. But which hamiltonian is good is unknown.\n",
    "# Here just try to use H gate and measure on qudit-0.\n",
    "# The hamiltonian in the format of \"[(coef1, op1), (coef2, op2), ... , (coefn, opn)]\n",
    "\n",
    "hams = [(1.0, H(dim).on(0)), (1.0, H(dim).on(1)), (1.0, H(dim).on(2))]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fb2f8e47-ec68-4061-aca1-b7b438550e92",
   "metadata": {},
   "source": [
    "## Train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "80d16231-f168-4289-bfea-7cfeac122697",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Since the `Circuit` inherits from `nn.Cell`, we can treat the circuit just as neural-network.\n",
    "\n",
    "expect_fn = Expectation(hams)                                   # Calculate the expectation of each qudit\n",
    "optimizer = nn.Adam(net.trainable_params(), learning_rate=0.1)  # Optimizer\n",
    "loss_fn = nn.CrossEntropyLoss()                                 # Loss function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "4a572373-b2f1-42eb-99e3-067c1a596634",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Forward function\n",
    "\n",
    "def forward_fn(label):\n",
    "    out = expect_fn(net())\n",
    "    loss = loss_fn(out.reshape((1,-1)), label)\n",
    "    return loss\n",
    "\n",
    "grad_fn = ms.value_and_grad(forward_fn, None, optimizer.parameters)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "00380a76-afa2-4893-8a68-433e583b88cc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Epoch 0] \tMean loss:0.78 \tSpend time: 15.95 seconds.\n",
      "[Epoch 1] \tMean loss:0.73 \tSpend time: 15.14 seconds.\n",
      "[Epoch 2] \tMean loss:0.73 \tSpend time: 16.48 seconds.\n"
     ]
    }
   ],
   "source": [
    "n_epoch = 3\n",
    "loss_record = []\n",
    "net.set_train(True)\n",
    "for e in range(n_epoch):\n",
    "    loss = 0.0\n",
    "    t1 = time.time()\n",
    "    for x, y in zip(X_train, y_train):\n",
    "        data = Tensor(x, DTYPE)\n",
    "        label = Tensor(y, ms.int32).reshape((1))\n",
    "        net.assign_encoder_parameters(data)\n",
    "        los, grads = grad_fn(label)\n",
    "        optimizer(grads)\n",
    "        loss += los.numpy()\n",
    "    loss = loss / len(X_train)\n",
    "    print(f\"[Epoch {e}] \\tMean loss:{loss:.2f} \\tSpend time: {time.time()-t1:.2f} seconds.\")\n",
    "    loss_record.append(loss)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f7b6d124-d668-49a7-bec0-22b8b64d7b5e",
   "metadata": {},
   "source": [
    "## Valdation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "e7be92ee-8d48-4b1d-b631-4e85ac815861",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The accuracy on validation dataset is: 0.82.\n"
     ]
    }
   ],
   "source": [
    "# The accuracy on validation dataset\n",
    "\n",
    "net.set_train(False)\n",
    "correct = 0\n",
    "for ix, iy in zip(X_test, y_test):\n",
    "    net.assign_encoder_parameters(ix)\n",
    "    out = expect_fn(net()).numpy()\n",
    "    correct += int(np.argmax(out) == iy)\n",
    "\n",
    "accuracy = correct / len(X_test)\n",
    "print(f\"The accuracy on validation dataset is: {accuracy:.2f}.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e53ec1ec-3429-4bba-a708-800b6d2adf11",
   "metadata": {},
   "source": [
    "Here we can see the accurancy is 0.82, which is significantly greater than random guess (0.33), which means the VQE network works."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3f07eca6-f2df-4842-be8f-d49020efae12",
   "metadata": {},
   "source": [
    "### Steps of Training\n",
    "\n",
    "Normally, we can train the net by the next step:\n",
    "\n",
    "- Assign encoder value.\n",
    "- Get the expectations based on Hamiltonians and circuit.\n",
    "- Get the loss.\n",
    "- Backward to calculate gradient.\n",
    "- Update paramaters based on gradient.\n",
    "\n",
    "A demo code is like:\n",
    "\n",
    "```python\n",
    "for x, y in zip(X_train, y_train):\n",
    "    data = Tensor(x, DTYPE)\n",
    "    label = Tensor(y, ms.int32).reshape((1))\n",
    "    net.assign_encoder_parameters(data)\n",
    "    los, grads = grad_fn(label)\n",
    "    optimizer(grads)\n",
    "```"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "common",
   "language": "python",
   "name": "common"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
